<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LINE 1 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-1"></span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LINE 2 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE Safe #-}</span><span>
</span><span id="line-3"></span><span>
</span><span id="line-4"></span><span class="hs-pragma">{-# LINE 6 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-6"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-7"></span><span class="hs-comment">-- |</span><span>
</span><span id="line-8"></span><span class="hs-comment">-- Module      :  Graphics.Win32.GDI.Bitmap</span><span>
</span><span id="line-9"></span><span class="hs-comment">-- Copyright   :  (c) Alastair Reid, 1997-2003</span><span>
</span><span id="line-10"></span><span class="hs-comment">-- License     :  BSD-style (see the file libraries/base/LICENSE)</span><span>
</span><span id="line-11"></span><span class="hs-comment">--</span><span>
</span><span id="line-12"></span><span class="hs-comment">-- Maintainer  :  Esa Ilari Vuokko &lt;ei@vuokko.info&gt;</span><span>
</span><span id="line-13"></span><span class="hs-comment">-- Stability   :  provisional</span><span>
</span><span id="line-14"></span><span class="hs-comment">-- Portability :  portable</span><span>
</span><span id="line-15"></span><span class="hs-comment">--</span><span>
</span><span id="line-16"></span><span class="hs-comment">-- A collection of FFI declarations for interfacing with Win32.</span><span>
</span><span id="line-17"></span><span class="hs-comment">--</span><span>
</span><span id="line-18"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-19"></span><span>
</span><span id="line-20"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Graphics.Win32.GDI.Bitmap</span><span class="hs-special">(</span><span>
</span><span id="line-21"></span><span>        </span><span class="hs-identifier">RasterOp3</span><span class="hs-special">,</span><span>
</span><span id="line-22"></span><span>        </span><span class="hs-identifier">RasterOp4</span><span class="hs-special">,</span><span>
</span><span id="line-23"></span><span>        </span><span class="hs-identifier">sRCCOPY</span><span class="hs-special">,</span><span>
</span><span id="line-24"></span><span>        </span><span class="hs-identifier">sRCPAINT</span><span class="hs-special">,</span><span>
</span><span id="line-25"></span><span>        </span><span class="hs-identifier">sRCAND</span><span class="hs-special">,</span><span>
</span><span id="line-26"></span><span>        </span><span class="hs-identifier">sRCINVERT</span><span class="hs-special">,</span><span>
</span><span id="line-27"></span><span>        </span><span class="hs-identifier">sRCERASE</span><span class="hs-special">,</span><span>
</span><span id="line-28"></span><span>        </span><span class="hs-identifier">nOTSRCCOPY</span><span class="hs-special">,</span><span>
</span><span id="line-29"></span><span>        </span><span class="hs-identifier">nOTSRCERASE</span><span class="hs-special">,</span><span>
</span><span id="line-30"></span><span>        </span><span class="hs-identifier">mERGECOPY</span><span class="hs-special">,</span><span>
</span><span id="line-31"></span><span>        </span><span class="hs-identifier">mERGEPAINT</span><span class="hs-special">,</span><span>
</span><span id="line-32"></span><span>        </span><span class="hs-identifier">pATCOPY</span><span class="hs-special">,</span><span>
</span><span id="line-33"></span><span>        </span><span class="hs-identifier">pATPAINT</span><span class="hs-special">,</span><span>
</span><span id="line-34"></span><span>        </span><span class="hs-identifier">pATINVERT</span><span class="hs-special">,</span><span>
</span><span id="line-35"></span><span>        </span><span class="hs-identifier">dSTINVERT</span><span class="hs-special">,</span><span>
</span><span id="line-36"></span><span>        </span><span class="hs-identifier">bLACKNESS</span><span class="hs-special">,</span><span>
</span><span id="line-37"></span><span>        </span><span class="hs-identifier">wHITENESS</span><span class="hs-special">,</span><span>
</span><span id="line-38"></span><span>
</span><span id="line-39"></span><span>        </span><span class="hs-identifier">mAKEROP4</span><span class="hs-special">,</span><span>
</span><span id="line-40"></span><span>
</span><span id="line-41"></span><span>        </span><span class="hs-identifier">BITMAP</span><span class="hs-special">,</span><span>
</span><span id="line-42"></span><span>        </span><span class="hs-identifier">LPBITMAP</span><span class="hs-special">,</span><span>
</span><span id="line-43"></span><span>        </span><span class="hs-identifier">setBITMAP</span><span class="hs-special">,</span><span>
</span><span id="line-44"></span><span>        </span><span class="hs-identifier">deleteBitmap</span><span class="hs-special">,</span><span>
</span><span id="line-45"></span><span>        </span><span class="hs-identifier">createCompatibleBitmap</span><span class="hs-special">,</span><span>
</span><span id="line-46"></span><span>        </span><span class="hs-identifier">createBitmap</span><span class="hs-special">,</span><span>
</span><span id="line-47"></span><span>        </span><span class="hs-identifier">createBitmapIndirect</span><span class="hs-special">,</span><span>
</span><span id="line-48"></span><span>        </span><span class="hs-identifier">createDIBPatternBrushPt</span><span class="hs-special">,</span><span>
</span><span id="line-49"></span><span>        </span><span class="hs-identifier">getBitmapDimensionEx</span><span class="hs-special">,</span><span>
</span><span id="line-50"></span><span>        </span><span class="hs-identifier">setBitmapDimensionEx</span><span class="hs-special">,</span><span>
</span><span id="line-51"></span><span>        </span><span class="hs-identifier">getBitmapInfo</span><span class="hs-special">,</span><span>
</span><span id="line-52"></span><span>
</span><span id="line-53"></span><span>        </span><span class="hs-identifier">BitmapCompression</span><span class="hs-special">,</span><span>
</span><span id="line-54"></span><span>        </span><span class="hs-identifier">bI_RGB</span><span class="hs-special">,</span><span>
</span><span id="line-55"></span><span>        </span><span class="hs-identifier">bI_RLE8</span><span class="hs-special">,</span><span>
</span><span id="line-56"></span><span>        </span><span class="hs-identifier">bI_RLE4</span><span class="hs-special">,</span><span>
</span><span id="line-57"></span><span>        </span><span class="hs-identifier">bI_BITFIELDS</span><span class="hs-special">,</span><span>
</span><span id="line-58"></span><span>
</span><span id="line-59"></span><span>        </span><span class="hs-identifier">ColorFormat</span><span class="hs-special">,</span><span>
</span><span id="line-60"></span><span>        </span><span class="hs-identifier">dIB_PAL_COLORS</span><span class="hs-special">,</span><span>
</span><span id="line-61"></span><span>        </span><span class="hs-identifier">dIB_RGB_COLORS</span><span class="hs-special">,</span><span>
</span><span id="line-62"></span><span>
</span><span id="line-63"></span><span>        </span><span class="hs-identifier">LPBITMAPINFO</span><span class="hs-special">,</span><span>
</span><span id="line-64"></span><span>        </span><span class="hs-identifier">BITMAPINFOHEADER</span><span class="hs-special">,</span><span>
</span><span id="line-65"></span><span>        </span><span class="hs-identifier">LPBITMAPINFOHEADER</span><span class="hs-special">,</span><span>
</span><span id="line-66"></span><span>        </span><span class="hs-identifier">getBITMAPINFOHEADER_</span><span class="hs-special">,</span><span>
</span><span id="line-67"></span><span>
</span><span id="line-68"></span><span>        </span><span class="hs-identifier">BITMAPFILEHEADER</span><span class="hs-special">,</span><span>
</span><span id="line-69"></span><span>        </span><span class="hs-identifier">LPBITMAPFILEHEADER</span><span class="hs-special">,</span><span>
</span><span id="line-70"></span><span>        </span><span class="hs-identifier">getBITMAPFILEHEADER</span><span class="hs-special">,</span><span>
</span><span id="line-71"></span><span>
</span><span id="line-72"></span><span>        </span><span class="hs-identifier">sizeofBITMAP</span><span class="hs-special">,</span><span>
</span><span id="line-73"></span><span>        </span><span class="hs-identifier">sizeofBITMAPINFO</span><span class="hs-special">,</span><span>
</span><span id="line-74"></span><span>        </span><span class="hs-identifier">sizeofBITMAPINFOHEADER</span><span class="hs-special">,</span><span>
</span><span id="line-75"></span><span>        </span><span class="hs-identifier">sizeofBITMAPFILEHEADER</span><span class="hs-special">,</span><span>
</span><span id="line-76"></span><span>        </span><span class="hs-identifier">sizeofLPBITMAPFILEHEADER</span><span class="hs-special">,</span><span>
</span><span id="line-77"></span><span>
</span><span id="line-78"></span><span>        </span><span class="hs-identifier">createBMPFile</span><span class="hs-special">,</span><span>
</span><span id="line-79"></span><span>        </span><span class="hs-identifier">cBM_INIT</span><span class="hs-special">,</span><span>
</span><span id="line-80"></span><span>        </span><span class="hs-identifier">getDIBits</span><span class="hs-special">,</span><span>
</span><span id="line-81"></span><span>        </span><span class="hs-identifier">setDIBits</span><span class="hs-special">,</span><span>
</span><span id="line-82"></span><span>        </span><span class="hs-identifier">createDIBitmap</span><span>
</span><span id="line-83"></span><span>
</span><span id="line-84"></span><span>        </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-85"></span><span>
</span><span id="line-86"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">System.Win32.Types</span><span>
</span><span id="line-87"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Graphics.Win32.GDI.Types</span><span>
</span><span id="line-88"></span><span>
</span><span id="line-89"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Control.Monad</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">liftM</span><span class="hs-special">)</span><span>
</span><span id="line-90"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Foreign</span><span>
</span><span id="line-91"></span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Foreign.C</span><span class="hs-cpp">


#include &quot;windows_cconv.h&quot;
</span><span>
</span><span id="line-96"></span><span>
</span><span id="line-97"></span><span>
</span><span id="line-98"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-99"></span><span class="hs-comment">-- Resources</span><span>
</span><span id="line-100"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-101"></span><span>
</span><span id="line-102"></span><span class="hs-comment">-- Yoiks - name clash</span><span>
</span><span id="line-103"></span><span class="hs-comment">-- %dis bitmap x = ptr ({LPTSTR} x)</span><span>
</span><span id="line-104"></span><span class="hs-comment">--</span><span>
</span><span id="line-105"></span><span class="hs-comment">-- type Bitmap = LPCTSTR</span><span>
</span><span id="line-106"></span><span class="hs-comment">--</span><span>
</span><span id="line-107"></span><span class="hs-comment">-- intToBitmap :: Int -&gt; Bitmap</span><span>
</span><span id="line-108"></span><span class="hs-comment">-- intToBitmap i = makeIntResource (toWord i)</span><span>
</span><span id="line-109"></span><span class="hs-comment">--</span><span>
</span><span id="line-110"></span><span class="hs-comment">-- %fun LoadBitmap :: MbHINSTANCE -&gt; Bitmap -&gt; IO HBITMAP</span><span>
</span><span id="line-111"></span><span class="hs-comment">-- %fail { res1 == 0 } { ErrorString(&quot;LoadBitmap&quot;) }</span><span>
</span><span id="line-112"></span><span class="hs-comment">--</span><span>
</span><span id="line-113"></span><span class="hs-comment">-- %const Bitmap</span><span>
</span><span id="line-114"></span><span class="hs-comment">-- % [ OBM_CLOSE        = { MAKEINTRESOURCE(OBM_CLOSE)       }</span><span>
</span><span id="line-115"></span><span class="hs-comment">-- % , OBM_UPARROW      = { MAKEINTRESOURCE(OBM_UPARROW)     }</span><span>
</span><span id="line-116"></span><span class="hs-comment">-- % , OBM_DNARROW      = { MAKEINTRESOURCE(OBM_DNARROW)     }</span><span>
</span><span id="line-117"></span><span class="hs-comment">-- % , OBM_RGARROW      = { MAKEINTRESOURCE(OBM_RGARROW)     }</span><span>
</span><span id="line-118"></span><span class="hs-comment">-- % , OBM_LFARROW      = { MAKEINTRESOURCE(OBM_LFARROW)     }</span><span>
</span><span id="line-119"></span><span class="hs-comment">-- % , OBM_REDUCE       = { MAKEINTRESOURCE(OBM_REDUCE)      }</span><span>
</span><span id="line-120"></span><span class="hs-comment">-- % , OBM_ZOOM         = { MAKEINTRESOURCE(OBM_ZOOM)        }</span><span>
</span><span id="line-121"></span><span class="hs-comment">-- % , OBM_RESTORE      = { MAKEINTRESOURCE(OBM_RESTORE)     }</span><span>
</span><span id="line-122"></span><span class="hs-comment">-- % , OBM_REDUCED      = { MAKEINTRESOURCE(OBM_REDUCED)     }</span><span>
</span><span id="line-123"></span><span class="hs-comment">-- % , OBM_ZOOMD        = { MAKEINTRESOURCE(OBM_ZOOMD)       }</span><span>
</span><span id="line-124"></span><span class="hs-comment">-- % , OBM_RESTORED     = { MAKEINTRESOURCE(OBM_RESTORED)    }</span><span>
</span><span id="line-125"></span><span class="hs-comment">-- % , OBM_UPARROWD     = { MAKEINTRESOURCE(OBM_UPARROWD)    }</span><span>
</span><span id="line-126"></span><span class="hs-comment">-- % , OBM_DNARROWD     = { MAKEINTRESOURCE(OBM_DNARROWD)    }</span><span>
</span><span id="line-127"></span><span class="hs-comment">-- % , OBM_RGARROWD     = { MAKEINTRESOURCE(OBM_RGARROWD)    }</span><span>
</span><span id="line-128"></span><span class="hs-comment">-- % , OBM_LFARROWD     = { MAKEINTRESOURCE(OBM_LFARROWD)    }</span><span>
</span><span id="line-129"></span><span class="hs-comment">-- % , OBM_MNARROW      = { MAKEINTRESOURCE(OBM_MNARROW)     }</span><span>
</span><span id="line-130"></span><span class="hs-comment">-- % , OBM_COMBO        = { MAKEINTRESOURCE(OBM_COMBO)       }</span><span>
</span><span id="line-131"></span><span class="hs-comment">-- % , OBM_UPARROWI     = { MAKEINTRESOURCE(OBM_UPARROWI)    }</span><span>
</span><span id="line-132"></span><span class="hs-comment">-- % , OBM_DNARROWI     = { MAKEINTRESOURCE(OBM_DNARROWI)    }</span><span>
</span><span id="line-133"></span><span class="hs-comment">-- % , OBM_RGARROWI     = { MAKEINTRESOURCE(OBM_RGARROWI)    }</span><span>
</span><span id="line-134"></span><span class="hs-comment">-- % , OBM_LFARROWI     = { MAKEINTRESOURCE(OBM_LFARROWI)    }</span><span>
</span><span id="line-135"></span><span class="hs-comment">-- % , OBM_OLD_CLOSE    = { MAKEINTRESOURCE(OBM_OLD_CLOSE)   }</span><span>
</span><span id="line-136"></span><span class="hs-comment">-- % , OBM_SIZE         = { MAKEINTRESOURCE(OBM_SIZE)        }</span><span>
</span><span id="line-137"></span><span class="hs-comment">-- % , OBM_OLD_UPARROW  = { MAKEINTRESOURCE(OBM_OLD_UPARROW) }</span><span>
</span><span id="line-138"></span><span class="hs-comment">-- % , OBM_OLD_DNARROW  = { MAKEINTRESOURCE(OBM_OLD_DNARROW) }</span><span>
</span><span id="line-139"></span><span class="hs-comment">-- % , OBM_OLD_RGARROW  = { MAKEINTRESOURCE(OBM_OLD_RGARROW) }</span><span>
</span><span id="line-140"></span><span class="hs-comment">-- % , OBM_OLD_LFARROW  = { MAKEINTRESOURCE(OBM_OLD_LFARROW) }</span><span>
</span><span id="line-141"></span><span class="hs-comment">-- % , OBM_BTSIZE       = { MAKEINTRESOURCE(OBM_BTSIZE)      }</span><span>
</span><span id="line-142"></span><span class="hs-comment">-- % , OBM_CHECK        = { MAKEINTRESOURCE(OBM_CHECK)       }</span><span>
</span><span id="line-143"></span><span class="hs-comment">-- % , OBM_CHECKBOXES   = { MAKEINTRESOURCE(OBM_CHECKBOXES)  }</span><span>
</span><span id="line-144"></span><span class="hs-comment">-- % , OBM_BTNCORNERS   = { MAKEINTRESOURCE(OBM_BTNCORNERS)  }</span><span>
</span><span id="line-145"></span><span class="hs-comment">-- % , OBM_OLD_REDUCE   = { MAKEINTRESOURCE(OBM_OLD_REDUCE)  }</span><span>
</span><span id="line-146"></span><span class="hs-comment">-- % , OBM_OLD_ZOOM     = { MAKEINTRESOURCE(OBM_OLD_ZOOM)    }</span><span>
</span><span id="line-147"></span><span class="hs-comment">-- % , OBM_OLD_RESTORE  = { MAKEINTRESOURCE(OBM_OLD_RESTORE) }</span><span>
</span><span id="line-148"></span><span class="hs-comment">-- % ]</span><span>
</span><span id="line-149"></span><span>
</span><span id="line-150"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-151"></span><span class="hs-comment">-- Raster Ops</span><span>
</span><span id="line-152"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-153"></span><span>
</span><span id="line-154"></span><span class="hs-identifier">sRCCOPY</span><span>       </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-155"></span><span class="hs-identifier">sRCCOPY</span><span>       </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">13369376</span><span>
</span><span id="line-156"></span><span class="hs-identifier">sRCPAINT</span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-157"></span><span class="hs-identifier">sRCPAINT</span><span>      </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">15597702</span><span>
</span><span id="line-158"></span><span class="hs-identifier">sRCAND</span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-159"></span><span class="hs-identifier">sRCAND</span><span>        </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">8913094</span><span>
</span><span id="line-160"></span><span class="hs-identifier">sRCINVERT</span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-161"></span><span class="hs-identifier">sRCINVERT</span><span>     </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">6684742</span><span>
</span><span id="line-162"></span><span class="hs-identifier">sRCERASE</span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-163"></span><span class="hs-identifier">sRCERASE</span><span>      </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">4457256</span><span>
</span><span id="line-164"></span><span class="hs-identifier">nOTSRCCOPY</span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-165"></span><span class="hs-identifier">nOTSRCCOPY</span><span>    </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">3342344</span><span>
</span><span id="line-166"></span><span class="hs-identifier">nOTSRCERASE</span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-167"></span><span class="hs-identifier">nOTSRCERASE</span><span>   </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">1114278</span><span>
</span><span id="line-168"></span><span class="hs-identifier">mERGECOPY</span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-169"></span><span class="hs-identifier">mERGECOPY</span><span>     </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">12583114</span><span>
</span><span id="line-170"></span><span class="hs-identifier">mERGEPAINT</span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-171"></span><span class="hs-identifier">mERGEPAINT</span><span>    </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">12255782</span><span>
</span><span id="line-172"></span><span class="hs-identifier">pATCOPY</span><span>       </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-173"></span><span class="hs-identifier">pATCOPY</span><span>       </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">15728673</span><span>
</span><span id="line-174"></span><span class="hs-identifier">pATPAINT</span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-175"></span><span class="hs-identifier">pATPAINT</span><span>      </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">16452105</span><span>
</span><span id="line-176"></span><span class="hs-identifier">pATINVERT</span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-177"></span><span class="hs-identifier">pATINVERT</span><span>     </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">5898313</span><span>
</span><span id="line-178"></span><span class="hs-identifier">dSTINVERT</span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-179"></span><span class="hs-identifier">dSTINVERT</span><span>     </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">5570569</span><span>
</span><span id="line-180"></span><span class="hs-identifier">bLACKNESS</span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-181"></span><span class="hs-identifier">bLACKNESS</span><span>     </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">66</span><span>
</span><span id="line-182"></span><span class="hs-identifier">wHITENESS</span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">RasterOp3</span><span>
</span><span id="line-183"></span><span class="hs-identifier">wHITENESS</span><span>     </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">16711778</span><span>
</span><span id="line-184"></span><span>
</span><span id="line-185"></span><span class="hs-pragma">{-# LINE 171 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-171"></span><span>
</span><span id="line-172"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-173"></span><span class="hs-comment">-- BITMAP</span><span>
</span><span id="line-174"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-175"></span><span>
</span><span id="line-176"></span><span class="hs-keyword">type</span><span> </span><span class="hs-identifier">BITMAP</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-177"></span><span>  </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">INT</span><span>     </span><span class="hs-comment">-- bmType</span><span>
</span><span id="line-178"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">INT</span><span>     </span><span class="hs-comment">-- bmWidth</span><span>
</span><span id="line-179"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">INT</span><span>     </span><span class="hs-comment">-- bmHeight</span><span>
</span><span id="line-180"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">INT</span><span>     </span><span class="hs-comment">-- bmWidthBytes</span><span>
</span><span id="line-181"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">WORD</span><span>    </span><span class="hs-comment">-- bmPlanes</span><span>
</span><span id="line-182"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">WORD</span><span>    </span><span class="hs-comment">-- bmBitsPixel</span><span>
</span><span id="line-183"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">LPVOID</span><span>  </span><span class="hs-comment">-- bmBits</span><span>
</span><span id="line-184"></span><span>  </span><span class="hs-special">)</span><span>
</span><span id="line-185"></span><span>
</span><span id="line-186"></span><span class="hs-identifier">peekBITMAP</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">BITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">BITMAP</span><span>
</span><span id="line-187"></span><span class="hs-identifier">peekBITMAP</span><span> </span><span class="hs-identifier">p</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-188"></span><span>  </span><span class="hs-identifier">ty</span><span>     </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">0</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-189"></span><span class="hs-pragma">{-# LINE 189 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-189"></span><span>  </span><span class="hs-identifier">width</span><span>  </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">4</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-190"></span><span class="hs-pragma">{-# LINE 190 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-190"></span><span>  </span><span class="hs-identifier">height</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">8</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-191"></span><span class="hs-pragma">{-# LINE 191 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-191"></span><span>  </span><span class="hs-identifier">wbytes</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">12</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-192"></span><span class="hs-pragma">{-# LINE 192 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-192"></span><span>  </span><span class="hs-identifier">planes</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">16</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-193"></span><span class="hs-pragma">{-# LINE 193 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-193"></span><span>  </span><span class="hs-identifier">pixel</span><span>  </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">18</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-194"></span><span class="hs-pragma">{-# LINE 194 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-194"></span><span>  </span><span class="hs-identifier">bits</span><span>   </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">24</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-195"></span><span class="hs-pragma">{-# LINE 195 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-195"></span><span>  </span><span class="hs-identifier">return</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">ty</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">width</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">height</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">wbytes</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">planes</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">pixel</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">bits</span><span class="hs-special">)</span><span>
</span><span id="line-196"></span><span>
</span><span id="line-197"></span><span class="hs-identifier">pokeBITMAP</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">BITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">BITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-198"></span><span class="hs-identifier">pokeBITMAP</span><span> </span><span class="hs-identifier">p</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">ty</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">width</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">height</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">wbytes</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">planes</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">pixel</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">bits</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-199"></span><span>  </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">pokeByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">0</span><span class="hs-special">)</span><span>       </span><span class="hs-identifier">p</span><span> </span><span class="hs-identifier">ty</span><span>
</span><span id="line-200"></span><span class="hs-pragma">{-# LINE 200 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-200"></span><span>  </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">pokeByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">4</span><span class="hs-special">)</span><span>      </span><span class="hs-identifier">p</span><span> </span><span class="hs-identifier">width</span><span>
</span><span id="line-201"></span><span class="hs-pragma">{-# LINE 201 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-201"></span><span>  </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">pokeByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">8</span><span class="hs-special">)</span><span>     </span><span class="hs-identifier">p</span><span> </span><span class="hs-identifier">height</span><span>
</span><span id="line-202"></span><span class="hs-pragma">{-# LINE 202 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-202"></span><span>  </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">pokeByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">12</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span> </span><span class="hs-identifier">wbytes</span><span>
</span><span id="line-203"></span><span class="hs-pragma">{-# LINE 203 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-203"></span><span>  </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">pokeByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">16</span><span class="hs-special">)</span><span>     </span><span class="hs-identifier">p</span><span> </span><span class="hs-identifier">planes</span><span>
</span><span id="line-204"></span><span class="hs-pragma">{-# LINE 204 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-204"></span><span>  </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">pokeByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">18</span><span class="hs-special">)</span><span>  </span><span class="hs-identifier">p</span><span> </span><span class="hs-identifier">pixel</span><span>
</span><span id="line-205"></span><span class="hs-pragma">{-# LINE 205 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-205"></span><span>  </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">pokeByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">24</span><span class="hs-special">)</span><span>       </span><span class="hs-identifier">p</span><span> </span><span class="hs-identifier">bits</span><span>
</span><span id="line-206"></span><span class="hs-pragma">{-# LINE 206 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-206"></span><span>
</span><span id="line-207"></span><span class="hs-keyword">type</span><span> </span><span class="hs-identifier">LPBITMAP</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">BITMAP</span><span>
</span><span id="line-208"></span><span>
</span><span id="line-209"></span><span class="hs-identifier">setBITMAP</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">LPBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">BITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-210"></span><span class="hs-identifier">setBITMAP</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">pokeBITMAP</span><span>
</span><span id="line-211"></span><span>
</span><span id="line-212"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-213"></span><span class="hs-comment">-- Misc</span><span>
</span><span id="line-214"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-215"></span><span>
</span><span id="line-216"></span><span class="hs-identifier">deleteBitmap</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-217"></span><span class="hs-identifier">deleteBitmap</span><span> </span><span class="hs-identifier">bitmap</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-218"></span><span>  </span><span class="hs-identifier">failIfFalse_</span><span> </span><span class="hs-string">&quot;DeleteBitmap&quot;</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">c_DeleteBitmap</span><span> </span><span class="hs-identifier">bitmap</span><span>
</span><span id="line-219"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h DeleteObject&quot;</span><span>
</span><span id="line-220"></span><span>  </span><span class="hs-identifier">c_DeleteBitmap</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">Bool</span><span>
</span><span id="line-221"></span><span>
</span><span id="line-222"></span><span class="hs-identifier">createBitmap</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">UINT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">UINT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Maybe</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBITMAP</span><span>
</span><span id="line-223"></span><span class="hs-identifier">createBitmap</span><span> </span><span class="hs-identifier">w</span><span> </span><span class="hs-identifier">h</span><span> </span><span class="hs-identifier">planes</span><span> </span><span class="hs-identifier">bits</span><span> </span><span class="hs-identifier">mb_color_data</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-224"></span><span>  </span><span class="hs-identifier">failIfNull</span><span> </span><span class="hs-string">&quot;CreateBitmap&quot;</span><span> </span><span class="hs-operator">$</span><span>
</span><span id="line-225"></span><span>    </span><span class="hs-identifier">c_CreateBitmap</span><span> </span><span class="hs-identifier">w</span><span> </span><span class="hs-identifier">h</span><span> </span><span class="hs-identifier">planes</span><span> </span><span class="hs-identifier">bits</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">maybePtr</span><span> </span><span class="hs-identifier">mb_color_data</span><span class="hs-special">)</span><span>
</span><span id="line-226"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h CreateBitmap&quot;</span><span>
</span><span id="line-227"></span><span>  </span><span class="hs-identifier">c_CreateBitmap</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">UINT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">UINT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBITMAP</span><span>
</span><span id="line-228"></span><span>
</span><span id="line-229"></span><span class="hs-identifier">createBitmapIndirect</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">LPBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBITMAP</span><span>
</span><span id="line-230"></span><span class="hs-identifier">createBitmapIndirect</span><span> </span><span class="hs-identifier">p_bm</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-231"></span><span>  </span><span class="hs-identifier">failIfNull</span><span> </span><span class="hs-string">&quot;CreateBitmapIndirect&quot;</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">c_CreateBitmapIndirect</span><span> </span><span class="hs-identifier">p_bm</span><span>
</span><span id="line-232"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h CreateBitmapIndirect&quot;</span><span>
</span><span id="line-233"></span><span>  </span><span class="hs-identifier">c_CreateBitmapIndirect</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">LPBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBITMAP</span><span>
</span><span id="line-234"></span><span>
</span><span id="line-235"></span><span class="hs-identifier">createCompatibleBitmap</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Int32</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Int32</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBITMAP</span><span>
</span><span id="line-236"></span><span class="hs-identifier">createCompatibleBitmap</span><span> </span><span class="hs-identifier">dc</span><span> </span><span class="hs-identifier">w</span><span> </span><span class="hs-identifier">h</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-237"></span><span>  </span><span class="hs-identifier">failIfNull</span><span> </span><span class="hs-string">&quot;CreateCompatibleBitmap&quot;</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">c_CreateCompatibleBitmap</span><span> </span><span class="hs-identifier">dc</span><span> </span><span class="hs-identifier">w</span><span> </span><span class="hs-identifier">h</span><span>
</span><span id="line-238"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h CreateCompatibleBitmap&quot;</span><span>
</span><span id="line-239"></span><span>  </span><span class="hs-identifier">c_CreateCompatibleBitmap</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Int32</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Int32</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBITMAP</span><span>
</span><span id="line-240"></span><span>
</span><span id="line-241"></span><span class="hs-identifier">createDIBPatternBrushPt</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ColorFormat</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBRUSH</span><span>
</span><span id="line-242"></span><span class="hs-identifier">createDIBPatternBrushPt</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">usage</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-243"></span><span>  </span><span class="hs-identifier">failIfNull</span><span> </span><span class="hs-string">&quot;CreateDIBPatternBrushPt&quot;</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">c_CreateDIBPatternBrushPt</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">usage</span><span>
</span><span id="line-244"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h CreateDIBPatternBrushPt&quot;</span><span>
</span><span id="line-245"></span><span>  </span><span class="hs-identifier">c_CreateDIBPatternBrushPt</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ColorFormat</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBRUSH</span><span>
</span><span id="line-246"></span><span>
</span><span id="line-247"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-248"></span><span class="hs-comment">-- Querying</span><span>
</span><span id="line-249"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-250"></span><span>
</span><span id="line-251"></span><span class="hs-identifier">getBitmapDimensionEx</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">SIZE</span><span>
</span><span id="line-252"></span><span class="hs-identifier">getBitmapDimensionEx</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-253"></span><span>  </span><span class="hs-identifier">allocaSIZE</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-glyph">\</span><span> </span><span class="hs-identifier">p_size</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-254"></span><span>  </span><span class="hs-identifier">failIfFalse_</span><span> </span><span class="hs-string">&quot;GetBitmapDimensionEx&quot;</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">c_GetBitmapDimensionEx</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">p_size</span><span>
</span><span id="line-255"></span><span>  </span><span class="hs-identifier">peekSIZE</span><span> </span><span class="hs-identifier">p_size</span><span>
</span><span id="line-256"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h GetBitmapDimensionEx&quot;</span><span>
</span><span id="line-257"></span><span>  </span><span class="hs-identifier">c_GetBitmapDimensionEx</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">SIZE</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">Bool</span><span>
</span><span id="line-258"></span><span>
</span><span id="line-259"></span><span class="hs-identifier">setBitmapDimensionEx</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">SIZE</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">SIZE</span><span>
</span><span id="line-260"></span><span class="hs-identifier">setBitmapDimensionEx</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">cx</span><span class="hs-special">,</span><span class="hs-identifier">cy</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-261"></span><span>  </span><span class="hs-identifier">allocaSIZE</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-glyph">\</span><span> </span><span class="hs-identifier">p_size</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-262"></span><span>  </span><span class="hs-identifier">failIfFalse_</span><span> </span><span class="hs-string">&quot;SetBitmapDimensionEx&quot;</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-263"></span><span>    </span><span class="hs-identifier">c_SetBitmapDimensionEx</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">cx</span><span> </span><span class="hs-identifier">cy</span><span> </span><span class="hs-identifier">p_size</span><span>
</span><span id="line-264"></span><span>  </span><span class="hs-identifier">peekSIZE</span><span> </span><span class="hs-identifier">p_size</span><span>
</span><span id="line-265"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h SetBitmapDimensionEx&quot;</span><span>
</span><span id="line-266"></span><span>  </span><span class="hs-identifier">c_SetBitmapDimensionEx</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LONG</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LONG</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">SIZE</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">Bool</span><span>
</span><span id="line-267"></span><span>
</span><span id="line-268"></span><span class="hs-identifier">getBitmapInfo</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">BITMAP</span><span>
</span><span id="line-269"></span><span class="hs-identifier">getBitmapInfo</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-270"></span><span>  </span><span class="hs-identifier">allocaBytes</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">fromIntegral</span><span> </span><span class="hs-identifier">sizeofBITMAP</span><span class="hs-special">)</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-glyph">\</span><span> </span><span class="hs-identifier">p_bm</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-271"></span><span>  </span><span class="hs-identifier">failIfFalse_</span><span> </span><span class="hs-string">&quot;GetBitmapInfo&quot;</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">c_GetBitmapInfo</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">sizeofBITMAP</span><span> </span><span class="hs-identifier">p_bm</span><span>
</span><span id="line-272"></span><span>  </span><span class="hs-identifier">peekBITMAP</span><span> </span><span class="hs-identifier">p_bm</span><span>
</span><span id="line-273"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h GetObjectW&quot;</span><span>
</span><span id="line-274"></span><span>  </span><span class="hs-identifier">c_GetBitmapInfo</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">DWORD</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">Bool</span><span>
</span><span id="line-275"></span><span>
</span><span id="line-276"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-277"></span><span class="hs-comment">--</span><span>
</span><span id="line-278"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-279"></span><span>
</span><span id="line-280"></span><span class="hs-keyword">type</span><span> </span><span class="hs-identifier">BitmapCompression</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">DWORD</span><span>
</span><span id="line-281"></span><span>
</span><span id="line-282"></span><span class="hs-identifier">bI_RGB</span><span>        </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">BitmapCompression</span><span>
</span><span id="line-283"></span><span class="hs-identifier">bI_RGB</span><span>        </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">0</span><span>
</span><span id="line-284"></span><span class="hs-identifier">bI_RLE8</span><span>       </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">BitmapCompression</span><span>
</span><span id="line-285"></span><span class="hs-identifier">bI_RLE8</span><span>       </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">1</span><span>
</span><span id="line-286"></span><span class="hs-identifier">bI_RLE4</span><span>       </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">BitmapCompression</span><span>
</span><span id="line-287"></span><span class="hs-identifier">bI_RLE4</span><span>       </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">2</span><span>
</span><span id="line-288"></span><span class="hs-identifier">bI_BITFIELDS</span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">BitmapCompression</span><span>
</span><span id="line-289"></span><span class="hs-identifier">bI_BITFIELDS</span><span>  </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">3</span><span>
</span><span id="line-290"></span><span>
</span><span id="line-291"></span><span class="hs-pragma">{-# LINE 288 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-288"></span><span>
</span><span id="line-289"></span><span class="hs-keyword">type</span><span> </span><span class="hs-identifier">ColorFormat</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">DWORD</span><span>
</span><span id="line-290"></span><span>
</span><span id="line-291"></span><span class="hs-identifier">dIB_PAL_COLORS</span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">ColorFormat</span><span>
</span><span id="line-292"></span><span class="hs-identifier">dIB_PAL_COLORS</span><span>  </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">1</span><span>
</span><span id="line-293"></span><span class="hs-identifier">dIB_RGB_COLORS</span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">ColorFormat</span><span>
</span><span id="line-294"></span><span class="hs-identifier">dIB_RGB_COLORS</span><span>  </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">0</span><span>
</span><span id="line-295"></span><span>
</span><span id="line-296"></span><span class="hs-pragma">{-# LINE 295 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-295"></span><span>
</span><span id="line-296"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-297"></span><span class="hs-comment">-- BITMAPINFO</span><span>
</span><span id="line-298"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-299"></span><span>
</span><span id="line-300"></span><span class="hs-keyword">type</span><span> </span><span class="hs-identifier">LPBITMAPINFO</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-301"></span><span>
</span><span id="line-302"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-303"></span><span class="hs-comment">-- BITMAPINFOHEADER</span><span>
</span><span id="line-304"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-305"></span><span>
</span><span id="line-306"></span><span class="hs-keyword">type</span><span> </span><span class="hs-identifier">BITMAPINFOHEADER</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-307"></span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">DWORD</span><span>              </span><span class="hs-comment">-- biSize      -- sizeof(BITMAPINFOHEADER)</span><span>
</span><span id="line-308"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">LONG</span><span>               </span><span class="hs-comment">-- biWidth</span><span>
</span><span id="line-309"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">LONG</span><span>               </span><span class="hs-comment">-- biHeight</span><span>
</span><span id="line-310"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">WORD</span><span>               </span><span class="hs-comment">-- biPlanes</span><span>
</span><span id="line-311"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">WORD</span><span>               </span><span class="hs-comment">-- biBitCount  -- 1, 4, 8, 16, 24 or 32</span><span>
</span><span id="line-312"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">BitmapCompression</span><span>  </span><span class="hs-comment">-- biCompression</span><span>
</span><span id="line-313"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">DWORD</span><span>              </span><span class="hs-comment">-- biSizeImage</span><span>
</span><span id="line-314"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">LONG</span><span>               </span><span class="hs-comment">-- biXPelsPerMeter</span><span>
</span><span id="line-315"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">LONG</span><span>               </span><span class="hs-comment">-- biYPelsPerMeter</span><span>
</span><span id="line-316"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">Maybe</span><span> </span><span class="hs-identifier">DWORD</span><span>        </span><span class="hs-comment">-- biClrUsed</span><span>
</span><span id="line-317"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">Maybe</span><span> </span><span class="hs-identifier">DWORD</span><span>        </span><span class="hs-comment">-- biClrImportant</span><span>
</span><span id="line-318"></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-319"></span><span>
</span><span id="line-320"></span><span class="hs-identifier">peekBITMAPINFOHEADER</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">BITMAPINFOHEADER</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">BITMAPINFOHEADER</span><span>
</span><span id="line-321"></span><span class="hs-identifier">peekBITMAPINFOHEADER</span><span> </span><span class="hs-identifier">p</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-322"></span><span>  </span><span class="hs-identifier">size</span><span>     </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">0</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-323"></span><span class="hs-pragma">{-# LINE 323 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-323"></span><span>  </span><span class="hs-identifier">width</span><span>    </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">4</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-324"></span><span class="hs-pragma">{-# LINE 324 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-324"></span><span>  </span><span class="hs-identifier">height</span><span>   </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">8</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-325"></span><span class="hs-pragma">{-# LINE 325 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-325"></span><span>  </span><span class="hs-identifier">planes</span><span>   </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">12</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-326"></span><span class="hs-pragma">{-# LINE 326 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-326"></span><span>  </span><span class="hs-identifier">nbits</span><span>    </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">14</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-327"></span><span class="hs-pragma">{-# LINE 327 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-327"></span><span>  </span><span class="hs-identifier">comp</span><span>     </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">16</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-328"></span><span class="hs-pragma">{-# LINE 328 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-328"></span><span>  </span><span class="hs-identifier">imsize</span><span>   </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">20</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-329"></span><span class="hs-pragma">{-# LINE 329 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-329"></span><span>  </span><span class="hs-identifier">xDensity</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">24</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-330"></span><span class="hs-pragma">{-# LINE 330 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-330"></span><span>  </span><span class="hs-identifier">yDensity</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">28</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-331"></span><span class="hs-pragma">{-# LINE 331 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-331"></span><span>  </span><span class="hs-identifier">clrUsed</span><span>  </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">liftM</span><span> </span><span class="hs-identifier">numToMaybe</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">32</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-332"></span><span class="hs-pragma">{-# LINE 332 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-332"></span><span>  </span><span class="hs-identifier">clrImp</span><span>   </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier">liftM</span><span> </span><span class="hs-identifier">numToMaybe</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">36</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-333"></span><span class="hs-pragma">{-# LINE 333 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-333"></span><span>  </span><span class="hs-identifier">return</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">size</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">width</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">height</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">planes</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">nbits</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">comp</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">imsize</span><span class="hs-special">,</span><span>
</span><span id="line-334"></span><span>          </span><span class="hs-identifier">xDensity</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">yDensity</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">clrUsed</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">clrImp</span><span class="hs-special">)</span><span>
</span><span id="line-335"></span><span>
</span><span id="line-336"></span><span class="hs-keyword">type</span><span> </span><span class="hs-identifier">LPBITMAPINFOHEADER</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">BITMAPINFOHEADER</span><span>
</span><span id="line-337"></span><span>
</span><span id="line-338"></span><span class="hs-identifier">getBITMAPINFOHEADER_</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">LPBITMAPINFOHEADER</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">BITMAPINFOHEADER</span><span>
</span><span id="line-339"></span><span class="hs-identifier">getBITMAPINFOHEADER_</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">peekBITMAPINFOHEADER</span><span>
</span><span id="line-340"></span><span>
</span><span id="line-341"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-342"></span><span class="hs-comment">-- BITMAPFILEHEADER</span><span>
</span><span id="line-343"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-344"></span><span>
</span><span id="line-345"></span><span class="hs-keyword">type</span><span> </span><span class="hs-identifier">BITMAPFILEHEADER</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-346"></span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-identifier">WORD</span><span>   </span><span class="hs-comment">-- bfType      -- &quot;BM&quot; == 0x4d42</span><span>
</span><span id="line-347"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">DWORD</span><span>  </span><span class="hs-comment">-- bfSize      -- number of bytes in file</span><span>
</span><span id="line-348"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">WORD</span><span>   </span><span class="hs-comment">-- bfReserved1 -- == 0</span><span>
</span><span id="line-349"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">WORD</span><span>   </span><span class="hs-comment">-- bfReserved2 -- == 0</span><span>
</span><span id="line-350"></span><span> </span><span class="hs-special">,</span><span> </span><span class="hs-identifier">DWORD</span><span>  </span><span class="hs-comment">-- bfOffBits   -- == (char*) bits - (char*) filehdr</span><span>
</span><span id="line-351"></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-352"></span><span>
</span><span id="line-353"></span><span class="hs-identifier">peekBITMAPFILEHEADER</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">BITMAPFILEHEADER</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">BITMAPFILEHEADER</span><span>
</span><span id="line-354"></span><span class="hs-identifier">peekBITMAPFILEHEADER</span><span> </span><span class="hs-identifier">p</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-355"></span><span>  </span><span class="hs-identifier">ty</span><span>     </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">0</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-356"></span><span class="hs-pragma">{-# LINE 356 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-356"></span><span>  </span><span class="hs-identifier">size</span><span>   </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">2</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-357"></span><span class="hs-pragma">{-# LINE 357 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-357"></span><span>  </span><span class="hs-identifier">res1</span><span>   </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">6</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-358"></span><span class="hs-pragma">{-# LINE 358 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-358"></span><span>  </span><span class="hs-identifier">res2</span><span>   </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">8</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-359"></span><span class="hs-pragma">{-# LINE 359 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-359"></span><span>  </span><span class="hs-identifier">offset</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">peekByteOff</span><span> </span><span class="hs-identifier">hsc_ptr</span><span> </span><span class="hs-number">10</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">p</span><span>
</span><span id="line-360"></span><span class="hs-pragma">{-# LINE 360 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-360"></span><span>  </span><span class="hs-identifier">return</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">ty</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">size</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">res1</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">res2</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">offset</span><span class="hs-special">)</span><span>
</span><span id="line-361"></span><span>
</span><span id="line-362"></span><span class="hs-keyword">type</span><span> </span><span class="hs-identifier">LPBITMAPFILEHEADER</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">Ptr</span><span> </span><span class="hs-identifier">BITMAPFILEHEADER</span><span>
</span><span id="line-363"></span><span>
</span><span id="line-364"></span><span class="hs-identifier">getBITMAPFILEHEADER</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">LPBITMAPFILEHEADER</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">BITMAPFILEHEADER</span><span>
</span><span id="line-365"></span><span class="hs-identifier">getBITMAPFILEHEADER</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">peekBITMAPFILEHEADER</span><span>
</span><span id="line-366"></span><span>
</span><span id="line-367"></span><span class="hs-identifier">sizeofBITMAP</span><span>             </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Word32</span><span>
</span><span id="line-368"></span><span class="hs-identifier">sizeofBITMAP</span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-number">32</span><span class="hs-special">)</span><span>
</span><span id="line-369"></span><span class="hs-pragma">{-# LINE 369 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-369"></span><span class="hs-identifier">sizeofBITMAPINFO</span><span>         </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Word32</span><span>
</span><span id="line-370"></span><span class="hs-identifier">sizeofBITMAPINFO</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-number">44</span><span class="hs-special">)</span><span>
</span><span id="line-371"></span><span class="hs-pragma">{-# LINE 371 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-371"></span><span class="hs-identifier">sizeofBITMAPINFOHEADER</span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Word32</span><span>
</span><span id="line-372"></span><span class="hs-identifier">sizeofBITMAPINFOHEADER</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-number">40</span><span class="hs-special">)</span><span>
</span><span id="line-373"></span><span class="hs-pragma">{-# LINE 373 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-373"></span><span class="hs-identifier">sizeofBITMAPFILEHEADER</span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Word32</span><span>
</span><span id="line-374"></span><span class="hs-identifier">sizeofBITMAPFILEHEADER</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-number">14</span><span class="hs-special">)</span><span>
</span><span id="line-375"></span><span class="hs-pragma">{-# LINE 375 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-375"></span><span class="hs-identifier">sizeofLPBITMAPFILEHEADER</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">Word32</span><span>
</span><span id="line-376"></span><span class="hs-identifier">sizeofLPBITMAPFILEHEADER</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-number">14</span><span class="hs-special">)</span><span>
</span><span id="line-377"></span><span class="hs-pragma">{-# LINE 377 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-377"></span><span>
</span><span id="line-378"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-379"></span><span class="hs-comment">-- CreateBMPFile</span><span>
</span><span id="line-380"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-381"></span><span>
</span><span id="line-382"></span><span class="hs-comment">-- A (large) helper function - courtesy of Microsoft</span><span>
</span><span id="line-383"></span><span>
</span><span id="line-384"></span><span class="hs-identifier">createBMPFile</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">String</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-385"></span><span class="hs-identifier">createBMPFile</span><span> </span><span class="hs-identifier">name</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">dc</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-386"></span><span>  </span><span class="hs-identifier">withCWString</span><span> </span><span class="hs-identifier">name</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-glyph">\</span><span> </span><span class="hs-identifier">c_name</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-387"></span><span>  </span><span class="hs-identifier">c_CreateBMPFile</span><span> </span><span class="hs-identifier">c_name</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">dc</span><span>
</span><span id="line-388"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">ccall</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;dumpBMP.h CreateBMPFile&quot;</span><span>
</span><span id="line-389"></span><span>  </span><span class="hs-identifier">c_CreateBMPFile</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">LPCTSTR</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-390"></span><span>
</span><span id="line-391"></span><span class="hs-pragma">{-# CFILES cbits/dumpBMP.c #-}</span><span>
</span><span id="line-392"></span><span>
</span><span id="line-393"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-394"></span><span class="hs-comment">-- Device Independent Bitmaps</span><span>
</span><span id="line-395"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-396"></span><span>
</span><span id="line-397"></span><span class="hs-identifier">cBM_INIT</span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">DWORD</span><span>
</span><span id="line-398"></span><span class="hs-identifier">cBM_INIT</span><span>  </span><span class="hs-glyph">=</span><span>  </span><span class="hs-number">4</span><span>
</span><span id="line-399"></span><span>
</span><span id="line-400"></span><span class="hs-pragma">{-# LINE 400 &quot;libraries\\Win32\\Graphics\\Win32\\GDI\\Bitmap.hsc&quot; #-}</span><span>
</span><span id="line-400"></span><span>
</span><span id="line-401"></span><span class="hs-identifier">getDIBits</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">Maybe</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPBITMAPINFO</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ColorFormat</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">INT</span><span>
</span><span id="line-402"></span><span class="hs-identifier">getDIBits</span><span> </span><span class="hs-identifier">dc</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">start</span><span> </span><span class="hs-identifier">nlines</span><span> </span><span class="hs-identifier">mb_bits</span><span> </span><span class="hs-identifier">info</span><span> </span><span class="hs-identifier">usage</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-403"></span><span>  </span><span class="hs-identifier">failIfZero</span><span> </span><span class="hs-string">&quot;GetDIBits&quot;</span><span> </span><span class="hs-operator">$</span><span>
</span><span id="line-404"></span><span>    </span><span class="hs-identifier">c_GetDIBits</span><span> </span><span class="hs-identifier">dc</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">start</span><span> </span><span class="hs-identifier">nlines</span><span> </span><span class="hs-special">(</span><span class="hs-identifier">maybePtr</span><span> </span><span class="hs-identifier">mb_bits</span><span class="hs-special">)</span><span> </span><span class="hs-identifier">info</span><span> </span><span class="hs-identifier">usage</span><span>
</span><span id="line-405"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h GetDIBits&quot;</span><span>
</span><span id="line-406"></span><span>  </span><span class="hs-identifier">c_GetDIBits</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPBITMAPINFO</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ColorFormat</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">INT</span><span>
</span><span id="line-407"></span><span>
</span><span id="line-408"></span><span class="hs-identifier">setDIBits</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPBITMAPINFO</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ColorFormat</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">INT</span><span>
</span><span id="line-409"></span><span class="hs-identifier">setDIBits</span><span> </span><span class="hs-identifier">dc</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">start</span><span> </span><span class="hs-identifier">nlines</span><span> </span><span class="hs-identifier">bits</span><span> </span><span class="hs-identifier">info</span><span> </span><span class="hs-identifier">use</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-410"></span><span>  </span><span class="hs-identifier">failIfZero</span><span> </span><span class="hs-string">&quot;SetDIBits&quot;</span><span> </span><span class="hs-operator">$</span><span> </span><span class="hs-identifier">c_SetDIBits</span><span> </span><span class="hs-identifier">dc</span><span> </span><span class="hs-identifier">bm</span><span> </span><span class="hs-identifier">start</span><span> </span><span class="hs-identifier">nlines</span><span> </span><span class="hs-identifier">bits</span><span> </span><span class="hs-identifier">info</span><span> </span><span class="hs-identifier">use</span><span>
</span><span id="line-411"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h SetDIBits&quot;</span><span>
</span><span id="line-412"></span><span>  </span><span class="hs-identifier">c_SetDIBits</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">HBITMAP</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">INT</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPBITMAPINFO</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ColorFormat</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">INT</span><span>
</span><span id="line-413"></span><span>
</span><span id="line-414"></span><span class="hs-identifier">createDIBitmap</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPBITMAPINFOHEADER</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">DWORD</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPBITMAPINFO</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ColorFormat</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBITMAP</span><span>
</span><span id="line-415"></span><span class="hs-identifier">createDIBitmap</span><span> </span><span class="hs-identifier">dc</span><span> </span><span class="hs-identifier">hdr</span><span> </span><span class="hs-identifier">option</span><span> </span><span class="hs-identifier">init_val</span><span> </span><span class="hs-identifier">info</span><span> </span><span class="hs-identifier">usage</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-416"></span><span>  </span><span class="hs-identifier">failIfNull</span><span> </span><span class="hs-string">&quot;CreateDIBitmap&quot;</span><span> </span><span class="hs-operator">$</span><span>
</span><span id="line-417"></span><span>    </span><span class="hs-identifier">c_CreateDIBitmap</span><span> </span><span class="hs-identifier">dc</span><span> </span><span class="hs-identifier">hdr</span><span> </span><span class="hs-identifier">option</span><span> </span><span class="hs-identifier">init_val</span><span> </span><span class="hs-identifier">info</span><span> </span><span class="hs-identifier">usage</span><span>
</span><span id="line-418"></span><span class="hs-keyword">foreign</span><span> </span><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">WINDOWS_CCONV</span><span> </span><span class="hs-keyword">unsafe</span><span> </span><span class="hs-string">&quot;windows.h CreateDIBitmap&quot;</span><span>
</span><span id="line-419"></span><span>  </span><span class="hs-identifier">c_CreateDIBitmap</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier">HDC</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPBITMAPINFOHEADER</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">DWORD</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPVOID</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">LPBITMAPINFO</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ColorFormat</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">IO</span><span> </span><span class="hs-identifier">HBITMAP</span><span>
</span><span id="line-420"></span><span>
</span><span id="line-421"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-422"></span><span class="hs-comment">-- End</span><span>
</span><span id="line-423"></span><span class="hs-comment">----------------------------------------------------------------</span><span>
</span><span id="line-424"></span></pre></body></html>